package HereClass;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;


/**
 * Classe chat, proporciona conversa entre dois usuarios
 * @author Caio, Ronaldo, Enio e Rafael
 * @version 5.1
 */
public class Chat implements SistemaDeMensagem{


	private int id1;
	private String msgToId1;
	private String msgToId2;
	private String userName1;
	private String userName2;
	
	private String historico = "";
	
	private UsuariosConectados usuariosConectados;
	
	/**
	 * Inicia Chat
	 */
	public Chat(){
		this.usuariosConectados= UsuariosConectados.getInstance();
	}
	
	/**
	 * Inicia o chat com dois Usuarios
	 * @param id1
	 * @param id2
	 */
	public void iniciaChat(int id1, int id2){
		this.id1=id1;
		this.userName1 = usuariosConectados.getUsuario(String.valueOf(id1)).getUserName();
		this.userName2 = usuariosConectados.getUsuario(String.valueOf(id2)).getUserName();
	}
	
	/**
	 * Envia mensagem
	 * @param para - id do outro usuario
	 * @param msg - mensagem para o outro usuario
	 */
	public void enviaMsg(int para, String msg){
		if(para==id1){
			msgToId1 = userName2 + ": " + msg;
			this.historico+=msgToId1+"\n";
		}
		else{
			msgToId2 = userName1 + ": " + msg;
			this.historico+=msgToId2+"\n";
		}
	}
	
	/**
	 * Retorna a mensagem do Usuario no momento
	 * Se o amigo do usuario enviar outra mensagem, entao muda a mensagem de retorno
	 * @param id
	 * @return String - mensagem recebida no momento
	 */
	public String getMsg(int id){
		if(id==id1) return msgToId1;
		return msgToId2;
		
	}
	
	/**
	 * Salva o chat em arquivo log
	 * @return o log do usuario
	 */
	public String returnLog(){

			String arquivo = "";
			if(userName1.compareToIgnoreCase(userName2) > 1)
				arquivo = userName2+"-"+userName1;
			else arquivo = userName1+"-"+userName2;
			FileOutputStream out;
			PrintStream p;

			try {
				out = new FileOutputStream(arquivo+".log", true);
				p = new PrintStream(out);
				p.print(historico.toString());
				p.close();
			} catch (IOException e) {
			}
			return "Documento convite.txt enviado com sucesso.";


	}

	@Override
	public void enviarMensagem(String from, String to, String mensagem) {
		this.enviaMsg(Integer.parseInt(to), mensagem);	
	}

	
	
}